home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / mus / play / MP132src.lha / Guido / Guido.doc < prev    next >
Text File  |  1992-05-25  |  19KB  |  375 lines

  1.                                    Guido
  2.                                 Version 2.1
  3.                        Copyright (C) 1992 Bryan Ford
  4.  
  5.  
  6.  
  7.                                Distribution
  8.                                ~~~~~~~~~~~~
  9.  
  10.     Unlike MultiPlayer, Guido is NOT distributed under the General Public
  11. License.  It is distributed under a separate copyright, with different
  12. distribution requirements.  The distribution requirements are thus:  I
  13. grant a license to link the library "guido.lib" into my music player
  14. program MultiPlayer ONLY.  The Guido compiler GComp may be used to generate
  15. Guido user interface object files for MultiPlayer ONLY.  Guido may be
  16. distributed ONLY with MultiPlayer, not by itself or with anything else. Any
  17. other use requires written permission directly from me (Bryan Ford). The
  18. Guido distribution must include the following files, complete and unchanged:
  19.  
  20.         Guido.doc       This file
  21.         GComp           User interface specification compiler
  22.         guido.lib       Library to be linked with MultiPlayer
  23.         guido.h         Header file needed by MultiPlayer
  24.  
  25.     I know that this is a rather strange distribution requirement, but
  26. right now I don't have the time to put together full documentation and
  27. everything else needed to release Guido as I did with Bovs and MemMan.  I
  28. eventually plan to release Guido under a license much like that of Bovs and
  29. MemMan (such that you will be allowed to use it freely in freely
  30. distributable programs, or for a small license fee in commercial programs).
  31. If there's sufficient interest in Guido I'll try and hurry up and release a
  32. really presentable version.
  33.  
  34.     In the meantime, you can use it to play with MultiPlayer's user
  35. interface and see how you like the language-oriented user interface design.
  36. What follows is a very brief (and quite outdated) section describing the
  37. Guido source code file format.  It certainly doesn't say everything about
  38. Guido, but it may at least give you enough information to customize
  39. MultiPlayer's user interface.  I'll work on full documentation some other
  40. time.
  41.  
  42.  
  43.  
  44.                                 File Format
  45.                                 ~~~~~~~~~~~
  46.  
  47.     In this section, I put actual keywords usable in GUI files in all caps
  48. for clarity.  I have tried not to use all caps for anything but this
  49. purpose, so if you see a word in all caps, chances are GComp understands
  50. it.  GComp, however, doesn't care about case, so you can do whatever you
  51. want in the actual GUI file.
  52.  
  53. Type            Parameters      Description
  54. ~~~~            ~~~~~~~~~~      ~~~~~~~~~~~
  55. Byte            number          8-bit signed integer.  REL adds the specified number to
  56.                 REL number      the last value used for this field.
  57.                 STRUCT (char)
  58.                 IMPORT (char)
  59.  
  60. Short           number          16-bit signed integer.
  61.                 REL number
  62.                 STRUCT (short)
  63.                 IMPORT (short)
  64.  
  65. Long            number          32-bit signed integer.
  66.                 REL number
  67.                 STRUCT (long)
  68.                 IMPORT (long)
  69.  
  70. Pointer         label           32-bit pointer.  Providing a label without an IMPORT
  71.                 "text"          keyword creates a direct reference - the address of that
  72.                 ARRAY (...)     label will be used as the pointer.  With IMPORT, an
  73.                 NULL            indirect reference is created - the label is assumed to
  74.                 STRUCT (ptr)    be a pointer variable, which is used as the pointer.
  75.                 IMPORT (ptr)    The NULL keyword specifies a null pointer.  See below
  76.                                 for information about the ARRAY construct.
  77.  
  78. RPointer        STRUCT (ptr)    Runtime pointer.  Same as above, except you MUST use
  79.                 IMPORT (ptr)    either STRUCT or IMPORT - no immediate modes are
  80.                                 supported.
  81.  
  82. Boolean         none            1-bit flag.  The presense of such a keyword, unless it
  83.                 STRUCT (long)   is followed by a STRUCT or IMPORT keyword, turns the
  84.                 IMPORT (long)   flag on.  If a STRUCT or IMPORT keyword is used, the
  85.                                 variable it refers to must be a 32-bit long int which
  86.                                 is interpreted as true if it is nonzero (as in
  87.                                 standard C conventions).
  88.  
  89. Bit OR          none            Presense of one of these keywords causes a particular
  90.                                 bit (or a number of bits) to be OR'd into a preceding
  91.                                 Byte, Short, or Long value.  The Bit OR type is the
  92.                                 only type that does not support the STRUCT or IMPORT
  93.                                 modifiers.  To set these values at runtime, you must
  94.                                 directly use the Byte, Short, or Long that these
  95.                                 keywords OR their values into.
  96.  
  97.     A few notes about Pointers:  A text string enclosed in double quotes is
  98. treated the same way as in C - a null-terminated string is created
  99. elsewhere and the pointer points to the first character of that string.  An
  100. ARRAY is a special construct mainly for use with CYCLE and MX gadgets.  If
  101. you enter the keyword ARRAY any place where a Pointer is expected, an array
  102. of other Pointers will be created and the "master" pointer will point to
  103. the first entry in the array.  After the ARRAY keyword you may enter as
  104. many other immediate pointers as you want (i.e. labels, "text", NULL, even
  105. nested ARRAYs, but not STRUCT or IMPORT).  Terminate the list with an END
  106. keyword.
  107.  
  108.                                   WINDOW
  109.                                   ~~~~~~
  110.  
  111. Name            Type            Description
  112. ~~~~            ~~~~            ~~~~~~~~~~~
  113. TITLE           Pointer         String to put in titlebar of window.
  114. SCREENTITLE     Pointer         Same for titlebar of screen while window is active.
  115.  
  116. SCREEN          RPointer        Screen on which to open this window.
  117.  
  118. LEFT            Short           Recommended left edge for window.
  119. TOP             Short           Recommended top edge for window.
  120. WIDTH           Short           Width for interior (panel area) of window.
  121. HEIGHT          Short           Height for interior of window.
  122.  
  123. ZLEFT           Short           These values work the same as the above, but specify
  124. ZTOP            Short           the alternate, "zoomed" state.  (This "zoomed" state
  125. ZWIDTH          Short           might actually be an iconified or shrunken state -
  126. ZHEIGHT         Short           it's really just an "alternate" state.)
  127.  
  128. MINWIDTH        Short           Minimum allowed size for window.  Unlike the above
  129. MINHEIGHT       Short           parameters, these DON'T get adjusted for the interior
  130.                                 of the window - they specify the minimum width of the
  131.                                 entire window, including border.  Therefore, make them
  132.                                 big enough to prevent funny things happening with
  133.                                 unexpectedly large borders.
  134.  
  135. MAXWIDTH        Short           Maximum allowed size for window.  Defaults to basically
  136. MAXHEIGHT       Short           infinite size.  Specifies window exterior, like MINWIDTH
  137.                                 and MINHEIGHT.
  138.  
  139. FLAGS           Long            Goes straight into NewWindow.Flags.
  140.                                 The following Bit OR keywords apply to this field.
  141.  
  142. SIZEGADGET      Bit OR          Makes the window sizeable.
  143. DRAGBAR         Bit OR          Makes the window draggable.
  144. DEPTHGADGET     Bit OR          Makes the window depth-arrangeable.
  145. CLOSEGADGET     Bit OR          Provides the window with a close gadget.
  146. SIZEBRIGHT      Bit OR          Puts the size gadget into the right border.
  147. SIZEBBOTTOM     Bit OR          Puts the size gadget into the bottom border.
  148. SIMPLEREFRESH   Bit OR          Application must do all refreshing.
  149.                                 (Guido handles all gadget refreshing automatically
  150.                                 on simplerefresh Guido panels.)
  151. SIMPLE_REFRESH  Bit OR          Synonym for above.
  152. SMARTREFRESH    Bit OR          Automatic refreshing except when window changes size.
  153. SMART_REFRESH   Bit OR          Synonym for above.
  154. SUPERBITMAP     Bit OR          Virtual bitmap; you must provide BitMap.
  155. SUPER_BITMAP    Bit OR          Synonym for above.
  156. BACKDROP        Bit OR          Puts the window in the background of the screen.
  157. REPORTMOUSE     Bit OR          Floods you with MOUSEMOVE messages.
  158. GIMMEZEROZERO   Bit OR          Creates a double-layered window.
  159. BORDERLESS      Bit OR          Creates a window without a border.
  160. ACTIVATE        Bit OR          Activates the window as soon as it opens.
  161. RMBTRAP         Bit OR          Sends right mouse button messages straight to you.
  162. NOCAREREFRESH   Bit OR          Stifles all refresh messages.
  163.  
  164. IDCMPFLAGS      Long            Goes straight into NewWindow.IDCMPFlags.
  165.                                 The following Bit OR keywords apply to this field.
  166.  
  167. REFRESHWINDOW   Bit OR          Tells you when the window needs refreshing.
  168.                                 (Always include this if you're using Guido Panels
  169.                                 on simplerefresh windows.)
  170. MOUSEBUTTONS    Bit OR          Tells you about mouse clicks and unclicks.
  171. MOUSEMOVE       Bit OR          Tells you about every mouse move while your window
  172.                                 is active.  (Must also use REPORTMOUSE above.)
  173. DELTAMOVE       Bit OR          Use with MOUSEMOVE - gives delta values.
  174. GADGETDOWN      Bit OR          Gadget pressed messages. (MX gadgets use this.)
  175. GADGETUP        Bit OR          Gadget released messages. (Most gadgets use this.)
  176. MENUVERIFY      Bit OR          Tells you when the user wants to use the menus.
  177. MENUPICK        BIT OR          Gives information about menu selections.
  178. MENUHELP        Bit OR          Tells you when the HELP key is pressed in the menus.
  179. SIZEVERIFY      Bit OR          Tells you when the user wants to size the window.
  180. NEWSIZE         Bit OR          Tells you when the user has sized the window.
  181. CLOSEWINDOW     Bit OR          Tells you when the close gadget was pressed.
  182. RAWKEY          Bit OR          Gives you raw, unadulterated keycodes.
  183. VANILLAKEY      Bit OR          Gives you preprocessed ASCII keystrokes.
  184. NEWPREFS        Bit OR          Tells you when system preferences have changed.
  185. DISKINSERTED    Bit OR          Duhh, tells you when George Bush sneezes.
  186. DISKREMOVED     Bit OR          Tells you when somebody sights Martians.
  187. ACTIVEWINDOW    Bit OR          Tells you when your window becomes active.
  188. INACTIVEWINDOW  Bit OR          Tells you when somebody else steals the show.
  189. INTUITICKS      Bit OR          One of these every tenth of a second.
  190. IDCMPUPDATE     Bit OR          Duhh, who knows?  I don't have the 2.0 manuals...
  191. CHANGEWINDOW    Bit OR          Haven't the slightest...
  192.  
  193. BUTTONIDCMP     Bit OR          Include this if you use buttons.
  194. CHECKBOXIDCMP   Bit OR          Include this if you use checkboxes.
  195. MXIDCMP         Bit OR          Include this if you use MX gadgets.
  196. RADIOIDCMP      Bit OR          Synonym for above.
  197. CYCLEIDCMP      Bit OR          Include this if you use cycle gadgets.
  198. NUMBERIDCMP     Bit OR          Include this if you use number (read-only) gadgets.
  199. INTEGERIDCMP    Bit OR          Include this if you use integer (editable) gadgets.
  200. TEXTIDCMP       Bit OR          Include this if you use text (read-only) gadgets.
  201. STRINGIDCMP     Bit OR          Include this if you use string (editable) gadgets.
  202. LISTVIEWIDCMP   Bit OR          Include this if you use listviews.
  203.  
  204.  
  205.  
  206.                                   Gadgets
  207.                                   ~~~~~~~
  208.  
  209.     This section lists the keywords common to all (or at least most) gadget types.
  210.  
  211. Name            Type            Description
  212. ~~~~            ~~~~            ~~~~~~~~~~~
  213. EXPORT          Pointer         When this gadget is created, fills in the pointer pointed
  214.                                 to by this pointer with a pointer to the newly created
  215.                                 Gadget, which can be used in Guido library function calls.
  216.  
  217. WIDTH           Short           Size of gadget (optional).
  218. HEIGHT          Short
  219.  
  220. LABEL           Pointer         Label text for this gadget.
  221.  
  222. LABELFLAGS      Long            Corresponds to GadTools' NewGadget.Flags field.
  223.                                 The following Bit OR keywords go into this field.
  224. LABELLEFT       Bit OR          Right-aligns the label to the left of the gadget.
  225. LABELRIGHT      Bit OR          Left-aligns the label to the right of the gadget.
  226. LABELABOVE      Bit OR          Centers the label above the gadget.
  227. LABELBELOW      Bit OR          Centers the label below the gadget.
  228. LABELIN         Bit OR          Chucks the label smack dab in the middle of the gadget.
  229. HIGHLABEL       Bit OR          Draws the label in a more shocking color.
  230.  
  231.  
  232.  
  233.                                   BUTTON
  234.                                   ~~~~~~
  235.  
  236.     This gadget type has no extra keywords.
  237.  
  238.  
  239.  
  240.                                  CHECKBOX
  241.                                  ~~~~~~~~
  242.  
  243. Name            Type            Description
  244. ~~~~            ~~~~            ~~~~~~~~~~~
  245. CHECKED         Boolean         Pre-select the checkbox.
  246.  
  247.  
  248.  
  249.                        CYCLE and MX (synonym RADIO)
  250.                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  251.  
  252. Name            Type            Description
  253. ~~~~            ~~~~            ~~~~~~~~~~~
  254. OPTIONS         Pointer         Points to a null-terminated array of string pointers
  255.                                 defining the selection options.  You can use the
  256.                                 ARRAY keyword to conveniently build these arrays within
  257.                                 the GUI file, or use IMPORT or STRUCT to reference
  258.                                 your own arrays.
  259.  
  260. ACTIVE          Long            Number of the initially active option, counting from zero.
  261.  
  262.  
  263.  
  264.                                    TEXT
  265.                                    ~~~~
  266.  
  267. Name            Type            Description
  268. ~~~~            ~~~~            ~~~~~~~~~~~
  269. TEXT            Pointer         Defines the text to display initially in the text box.
  270. COPYTEXT        Boolean         If set, an internal copy of the text string is kept so
  271.                                 you can free your own string after you set the text.
  272. BORDER          Boolean         If set, a beautiful sunken border appears around the text.
  273.  
  274.  
  275.  
  276.                                   STRING
  277.                                   ~~~~~~
  278.  
  279. Name            Type            Description
  280. ~~~~            ~~~~            ~~~~~~~~~~~
  281. STRING          Pointer         Defines the initial string for the string gadget.  This
  282.                                 string is immediately copied to an internal buffer.
  283. MAXSIZE         Long            Defines the length of the string buffer allocated.
  284.  
  285.  
  286.  
  287.                                   NUMBER
  288.                                   ~~~~~~
  289.  
  290. Name            Type            Description
  291. ~~~~            ~~~~            ~~~~~~~~~~~
  292. NUMBER          Long            Number to display initially.
  293. BORDER          Boolean         Draws a sunken border around the number.
  294.  
  295.  
  296.  
  297.                                   INTEGER
  298.                                   ~~~~~~~
  299.  
  300. Name            Type            Description
  301. ~~~~            ~~~~            ~~~~~~~~~~~
  302. NUMBER          Long            Number to use initially as the default in the gadget.
  303. MAXSIZE         Long            Maximum number of digits the user may enter.
  304.  
  305.  
  306.  
  307.                                  LISTVIEW
  308.                                  ~~~~~~~~
  309.  
  310. Name            Type            Description
  311. ~~~~            ~~~~            ~~~~~~~~~~~
  312. LIST            Pointer         Pointer to an Exec-style list to display initially.
  313.                                 The strings displayed are in the ln_Name fields.
  314. READONLY        Boolean         If you set this, the listview will appear sunken and
  315.                                 the user won't be able to select items.
  316. SHOWSELECTED    Special         If you use this keyword, the currently selected entry
  317.                                 will automatically be shown below the listview.  To
  318.                                 simply display the currently selected entry, enter
  319.                                 SHOWSELECTED NULL.  To allow the currently selected
  320.                                 entry to be edited, put a STRING gadget definition
  321.                                 immediately before this one and use SHOWSELECTED PREV.
  322. TOPITEM         Long            Specifies the item number to be displayed at the top
  323.                                 of the ListView list, counting from zero.
  324. ACTIVE          Long            Specifies the item number to be initially selected,
  325.                                 counting from zero.  Use -1 for no initial selection.
  326.  
  327.  
  328.  
  329.                                   FILEREQ
  330.                                   ~~~~~~~
  331.  
  332. Name            Type            Description
  333. ~~~~            ~~~~            ~~~~~~~~~~~
  334. MULTISELECT     Boolean         Allows the user to select several files at once.
  335. SAVE            Boolean         Inverts the imagery and disables double-clicking.
  336.  
  337. HAIL            Pointer         Text to display in the filerequester titlebar.
  338. OK              Pointer         Text to display in the OK gadget.
  339. CANCEL          Pointer         Text to display in the Cancel gadget.
  340. PATTERN         Pointer         AmigaDOS wildcard pattern - only filenames that
  341.                                 get past this will get displayed.
  342. WINDOW          RPointer        Pointer to the window over which to show the
  343.                                 file requester (mainly used for finding the
  344.                                 screen to put it in).
  345.  
  346. DONEMASK        Long            Specifies a signal mask which the filerequester
  347.                                 will send you when the user has closed it (i.e.
  348.                                 pressed OK or Cancel).  You can use IMPORT or
  349.                                 STRUCT and AllocSignal() to get a signal at
  350.                                 runtime, or you can be lazy and use one of the
  351.                                 Bit OR keywords below to use standard AmigaDOS
  352.                                 signal bits.
  353. DONECTRLC       Bit OR          Sends you SIGBREAKF_CTRL_C when done.
  354. DONECTRLD       Bit OR          Sends you SIGBREAKF_CTRL_D when done.
  355. DONECTRLE       Bit OR          Sends you SIGBREAKF_CTRL_E when done.
  356. DONECTRLF       Bit OR          Sends you SIGBREAKF_CTRL_F when done.
  357.  
  358.  
  359.  
  360.                               Version History
  361.                               ~~~~~~~~~~~~~~~
  362.  
  363. 2.1 (R3, May 25, 1992)
  364.         Released in GNU-ized MultiPlayer 1.30.
  365.         Added separate copyright messages, made it at least somewhat releasable.
  366.  
  367. 2.0 (R2, May 5, 1992)
  368.         Released in MultiPlayer 1.20.
  369.         Variable fonts.
  370.  
  371. 1.0 (R1)
  372.         Guido before the dawn of history.
  373.  
  374.  
  375.